1. Field of the Invention
This invention relates to object oriented programming. More particularly, the invention concerns the implementation of an object-oriented computing environment using a relational database. Still more particularly, the invention pertains to a method, system and computer program product for changing ("morphing") a class variable ("object" or "instance") defined in an object oriented computing environment from one abstract data type ("class") to another using relational database programming operations.
2. Description of the Prior Art
The above-referenced related patent applications disclose systems and methods for implementing an object oriented computing environment using a relational database storage system and a front-end programming interface implementing a relational programming language, such as SQL. In the application Ser. No. 08/790,302, filed Jan. 31, 1997, now U.S. Pat. No. 5,819,257, entitled "PROCESS FOR PROVIDING TRANSITIVE CLOSURE USING FOURTH GENERATION STRUCTURED QUERY LANGUAGE (SQL)," it is shown that an object oriented computing environment can be modeled as a directed acyclic graph, with the nodes of the graph representing classes or objects and the edges and paths between nodes representing hierarchical relationships between the classes or objects. These graph elements (nodes, edges and paths) are stored as relations (tables) in a relational database and relational database query techniques are used to determine the transitive closures between graph nodes, thus providing an object oriented class hierarchy representation in the database. The class hierarchy representation is fully updatable insofar as appropriate table modification procedures are invoked (e.g., using stored procedures) as classes or objects are added to, or removed from, the object oriented computing environment.
In the application Ser. No. 09/024,913, filed Feb. 17, 1998, now U.S. Pat. No. 6,105,035, entitled "OBJECT ORIENTED PROGRAMMING USING STANDARD STRUCTURED QUERY LANGUAGE (SQL)," it is shown that an object oriented computing environment can be completely modeled in a relational database. Tables are used to represent the salient elements of the object oriented computing environment, and include (1) a class identifier table identifying one or more classes, (2) a class edge table defining the edges between classes, (3) a class path table defining the paths between classes, a class attribute table identifying the attributes of each class and their data type, (4) a class method table identifying the methods associated with each class, (5) an object table identifying each instantiated object, its class and its owner, (6) an object edge table defining the edges between objects, (7) an object path table defining the paths between objects, and (8) an object attribute table identifying the attributes of each object and their values. Rules (e.g., triggers) are created that "fire" in response to selected relational database query operations (table updates and deletes, attribute value assignments, etc. ). These rules help provide and maintain class and object functionality, and implement support for such object oriented properties as inheritance, data encapsulation and polymorphism.
What is not supported in the foregoing system is the ability to automatically effect a change in object type after an object is initially defined. This is often desirable in an object-oriented computing environment because it allows the computing environment to adapt to changed circumstances. Consider the aforementioned patent application Ser. No. 09/024,913, filed Feb. 17, 1998, now U.S. Pat. No. 6,105,035, entitled "OBJECT ORIENTED PROGRAMMING USING STANDARD STRUCTURED QUERY LANGUAGE (SQL)," in which the example of an object oriented product development tracking tool is used. In this exemplary software program, large development projects are segmented into project features which are represented as objects. Each project feature object represents an instantiation of a defined feature class that exists within a feature class hierarchy. FIG. 1 of the aforesaid patent application illustrates the use of a feature super-super-class, a pair of large_feature and small_feature super-classes that are the descendants of the feature super-super-class, and a pair of xlarge_feature and xsmall_feature classes that are the descendants of the large_feature and small_feature super-classes, respectively.
If it is desired, by way of example, to reassign a project feature object from the small_feature super-class to the large_feature super-class, the relational database tables that define the project feature object would need to be manually updated by the user. The user would have to remove object attributes that are defined relative to the old class definition but not the new class definition, retain the attributes that are common to both class definitions, and add the new attributes that are part of the new class definition. This process may be referred to as "morphing" because it can be likened to the process of morphing a picture of a face of one person to a face of another person.
Support for object morphing in prior art object oriented computing systems is usually non-existent or supported very poorly. Typical implementations require a morphed object to acquire a new object identifier, thereby requiring the update of all objects that reference the old object identifier. An implementation that does not require such overhead would provide a significant improvement relative to prior art systems. A system and method that utilizes relational database technology and which does not require manual table updating operations would be further desirable.
Accordingly, there is a need in an object oriented computing environment, and particularly an object oriented environment implemented in a relational database, for a system and method that allows object class reassignment, i.e., morphing, to be implemented automatically in response to user commands, and without requiring re-identification of the object along with a concomitant modification of referencing objects. What is required is a system and method for object morphing in an object oriented computing environment that implements the foregoing advantages.